﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MJM.CONCURSO.EN;
using MJM.CONCURSO.CN;

namespace wRegPadron.Formularios
{
    public partial class Sorteo : System.Web.UI.Page
    {
        protected void OcultarPaneles()
        {
            pSorteo.Visible = false;
            pSinConcurso.Visible = false;
            pParticipantes.Visible = false;
            pConcurso.Visible = false;
            pSinSorteo.Visible = false;
        }

        protected bool CargarDatosConcurso()
        {
            hfIdConcurso.Value = "0";
            ConcursoEN obj = ConcursoCN.ObtenerConcursoActivoParaSorteo();
            if (obj != null)
            {
                lblPremio.Text = obj.Premio;
                lblTituloConcurso.Text = obj.Titulo;
                lblCantidad.Text = obj.CantidadGanadores.ToString();
                lblFecFin.Text = obj.FechaFin + " " + obj.HoraFin;
                lblFecInicio.Text = obj.FechaInicio + " " + obj.HoraInicio;
                lblFecSorteo.Text = obj.FechaSorteo + " " + obj.HoraSorteo;
                hfIdConcurso.Value = obj.ID.ToString();
                pConcurso.Visible = true;
            }
            else
            {
                pConcurso.Visible = false;
                pSinConcurso.Visible = true;
                pSinSorteo.Visible = false;
                lblTituloConcurso.Text = "Concurso";
            }

            return pConcurso.Visible;
        }

        protected void CargarParticipantes()
        {
            ParticipanteEN objParticipante = new ParticipanteEN();
            objParticipante.IDConcurso = Convert.ToInt32(hfIdConcurso.Value);
            rParticipantesActivo.DataSource = ParticipanteCN.ListarActivos(objParticipante);
            rParticipantesActivo.DataBind();
            pParticipantes.Visible = true;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    string usuario = Session["Usuario"].ToString();      
                    string pass = Request.QueryString["pass"].ToString();
                    lblTitulo.Text = "Sorteo de premios";
                    lblDescripcion.Text = "Permite seleccionar aleatoriamente a los ganadores del concurso";
                    OcultarPaneles();
                    if (CargarDatosConcurso())
                    {
                        CargarParticipantes();
                        var obj = new ConcursoEN();
                        obj.ID = Convert.ToInt32(hfIdConcurso.Value);
                        if (ConcursoCN.SePuedeSortear(obj))
                        {
                            pSorteo.Visible = true;
                            GanadorEN objGanador = new GanadorEN();
                            objGanador.IdConcurso = Convert.ToInt32(hfIdConcurso.Value);
                            rGanadores.DataSource = GanadorCN.Listar(objGanador);
                            rGanadores.DataBind();
                            if (rGanadores.Items.Count > 0)
                                btnSortear.Enabled = false;
                        }
                        else
                            pSinSorteo.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("http://gestion.munijesusmaria.gob.pe/appweb/wperspad/Login.aspx");
            }
        }

        protected void btnSortear_Click(object sender, EventArgs e)
        {
            ConcursoEN obj = ConcursoCN.ObtenerConcursoID(Convert.ToInt32(hfIdConcurso.Value));
            int cant = obj.CantidadGanadores;
            GanadorEN objGanador;
            int index = 0, value;
            List<int> nros = new List<int>();
            for (int i = 0; i < rParticipantesActivo.Items.Count; i++)
            {
                nros.Add(Convert.ToInt32(((HiddenField)(rParticipantesActivo.Items[i].FindControl("hfIdParticipante"))).Value));
            }

            while (cant > 0 && nros.Count > 0)
            {
                Random objrandom = new Random();
                index = objrandom.Next(nros.Count);
                objGanador = new GanadorEN();
                objGanador.IDParticipante = nros[index];
                value = GanadorCN.Insertar(objGanador);

                if (value > 0)
                {
                    nros.RemoveAt(index);
                    cant--;
                }
            }
            objGanador = new GanadorEN();
            objGanador.IdConcurso = Convert.ToInt32(hfIdConcurso.Value);
            rGanadores.DataSource = GanadorCN.Listar(objGanador);
            rGanadores.DataBind();
            btnSortear.Enabled = false;
        }
    }
}